#include <../lib/igloo/igloo.h>
using namespace igloo;

#include <stdio.h>
#include <string>
using namespace std;

#include "../../Archivos/ArchivoDeEstructurasVariables.h"
#include "../../Entidades/Lista.h"
using namespace Archivos;
using namespace Entidades;
Context(TestLista)
{

	ArchivoDeEstructurasVariables* archivo;
	string path;

	void SetUp() {

		path = "TestLista.bin";
		archivo = new ArchivoDeEstructurasVariables(path);

		Lista* entidadInsertada = new Lista();
		entidadInsertada->setNombre("Lista de Prueba!");
		entidadInsertada->setEleccion(20111212, "Presidente de la Republica de Mataderos");
		archivo->insertar(entidadInsertada);
		delete entidadInsertada;
	}

	void TearDown() {

		remove(path.c_str());
		delete archivo;
	}

	Spec(TestLeer) {

		Lista* entidadLeida = new Lista();
		archivo->leer(entidadLeida, 0);

		Assert::That(entidadLeida->getNombre(), Is().EqualTo("Lista de Prueba!"));
		Assert::That(entidadLeida->getEleccion()->getFecha(), Is().EqualTo(20111212));
		Assert::That(entidadLeida->getEleccion()->getCargo()->getNombre(),
				Is().EqualTo("Presidente de la Republica de Mataderos"));

		delete entidadLeida;
	}

	Spec(TestBorrar) {

		Lista* entidadBorrada = new Lista();
		bool borradoExitoso = archivo->borrar(entidadBorrada, 0);
		delete entidadBorrada;

		Assert::That(borradoExitoso, Is().EqualTo(true));
	}

};

